<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

var arr= [1,3,5,6,3,56,7,8,6,5,9]

// 快速排序：
function quickSort(elements){
        if (elements.length <= 1) return elements;
        var pivotIndex = Math.floor(elements.length / 2);
        var pivot = elements.splice(pivotIndex,1)[0];
        var left = [];
        var right = [];
        for (var i=0;i<elements.length;i++){

            if(elements[i]<pivot){
                left.push(elements[i]);
            }else{
                right.push(elements[i]);
            }
        }
        return quickSort(left).conocat([pivot],quickSort(right));
    }

    arr = quickSort(arr);
    console.log(arr);
// 利用中间元素进行判断，把小于中间元素的放在左边，大于中间元素的放在右边，当一直循环，当元素的数量等于1时，停止循环





// 选择排序：

    var arr= [4,3,5,6,3,56,7,8,6,5,9]
    for (var i=0 ;i<arr.length-1;i++){
        var min = i;
        for (var j=i+1;j<arr.length;j++){
            if(arr[min]>arr[j]){
                min = j;
            }
        }
        if (i !== min){
            var temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
    }

    console.log(arr);

// 假设当前元素最小值为min，比较后，更换下标，判断出现两个数相同的情况，如果
// 不相同再交换位置 ，交换的i是最开始比较的i，等所有下标比较完毕后，再进行交换





// 冒泡排序：

var arr= [1,3,5,6,3,56,7,8,6,5,9]
for(var i=0; i<arr.length-1;i++){ 外层循环管趟数
    for(var j=0;j<arr.length-1-i;j++){ 内层循环管交换次数
        if(arr[j]>arr[j+1]){   比较下一项和下下一项
            var temp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=temp;
        }
        
    }
}

// 有交换的趟数和交换的次数，所以用两个for循环




// 桶排序：

var arr= [1,3,5,6,3,56,7,8,6,5,9]
var obj={};
for(var i=0;i<arr.length;i++){
    obj[arr[i]]=arr[i];   值和键相等
}
console.log(obj);


// 以下数值是假设，方便对桶排序了解
// 最大值是19，最小值是0，所以这组数的取值范围是：19-0=19。
// 要用10个桶来分装这组数字，则一个桶的取值范围是：19 / 10 = 1.9。
// 我们让每个数字减去最小值再除以一个桶的取值范围就可以获得这个数字所对应的桶编号
// 第一个数字的桶编号就是：(9-0) / 1.9 = 4.7368·······
// 为了确保编号为整数，我们必须给编号取整，这里我们是向上取整，所以第一个数：9的桶编号就是5啦。





    </script>
</body>
</html>